package com.hfi.restful.security;

import com.hfi.restful.util.Utils;
import com.hfi.restful.web.register.CustomUser;
import com.hfi.restful.web.register.CustomUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionSignUp;
import org.springframework.stereotype.Component;

/**
 * @author ChangLiang
 * @date 2019/8/22
 */
@Component
public class DemoConnectionSignUp implements ConnectionSignUp {

    @Autowired
    private CustomUserService customUserService;

    @Override
    public String execute(Connection<?> connection) {
        // 根据社交用户信息 默认创建用户 并返回用户唯一标识
        CustomUser customUser = new CustomUser();
        customUser.setCustName(connection.getDisplayName());
        // 带着displayName转跳到setPassword页面上
        // 默认生成一个密码 让用户以后可以修改密码
        // 因为这里要实现直接绑定 如果不设置默认密码，会导致在register时中断
        // 如果在register时中断，那还不如直接就跳到signUp页面，让其设置密码
        // 可以用标识位标识这是默认生成的密码，下一次用户再进来，让其设置密码
        customUser.setPasswd(Utils.generateDefaultPassword());
        CustomUser user = customUserService.registerCustomUser(customUser);
        if (user != null) {
            return String.valueOf(user.getCustUserId());
        } else {
            throw new RuntimeException("第三方默认创建用户失败");
        }
    }
}
